<?php

class ProductController extends \BaseController {
    protected $layout = 'layouts.admin_panel';

    public function __construct (Product $product) {
        parent::__construct();
        $this->product = $product;
    }

	/**
     * Display a Product list
     * @author Thuan Truong
     * @return Response
     */
    public function index()
    {
        $products = $this->product->getAllProducts();

        $view = View::make('product.index')->with(array(
            'products' => $products,
            'pageSize' => $this->pageSize
        ));
        if (Request::ajax()) {
            return $this->ajaxResponse($view, Lang::get('nav.page.user.index'));
        } else {
            $this->layout->content = $view;
        }
    }
	
	/**
     * View form create
     * @author Thuan Truong
     */
    public function create() {
        $view = View::make('product.create');
        if (Request::ajax()) {
            return $this->ajaxResponse($view, Lang::get('nav.page.user.create'));
        } else {
            $this->layout->content = $view;
        }
    }
	
	/**
     * Store category then click save button
     * @author Thuan Truong
     */
    public function store() {
        $input = array_map('trim', Input::all());   //trim input       
        $validator = $this->product->validate($input);

        if($validator->passes()){
                       
            $this->product->createProduct($input);
            Session::flash('f_notice', 'Sản phẩm đã được thêm thành công');            
            return Response::json(array(
                    'status' => 1,
                    'redirect' => route('admin.product.index'),
                    'message' => 'Sản phẩm đã được thêm thành công'
            ));
            
        }else{
            if (Request::ajax()) {
            	$arr_error = $validator->messages()->getMessages();
                return Response::json(array(
                    'status' => 0, 
                    'code' => 'invalid_data', 
                    'messages' => $arr_error));
            }else{
                return Redirect::action('ProductController@index');
            }
        }       
    }
	
    
    /**
     * edit product
     * @author Thuan Truong
     */
    public function edit($id) {
        $product = $this->product->getProductById($id);
        $view = View::make('product.edit')->with(array(
            "product" => $product,
        ));
        if (Request::ajax()) {
            return $this->ajaxResponse($view, Lang::get('nav.page.user.index'));
        } else {
            $this->layout->content = $view;
        }
    }

    /**
     * Update Product
     * @author Thuan Truong
     */
    public function update($id) {
        $input = array_map('trim', Input::all());   //trim input
        $v = $this->product->validateUpdate($input);
        
        if($v->passes()){
            $this->product->updateProduct($input, $id);   
            
            Session::flash('f_notice', 'Sản phẩm đã được cập nhật thành công.');  
            return Response::json(array( 'status' => 1, 'redirect' => route('admin.product.index'), 'message' => 'Sản phẩm đã được cập nhật thành công.' ));
            
        }else{
            if (Request::ajax()) {
                $arr_error = $v->messages()->getMessages();
                return Response::json(array( 'status' => 0,  'code' => 'invalid_data', 'messages' => $arr_error));
            }else{
                return Redirect::action('ProductController@index');
            }
        }
    }

    /**
     * update status product
     * @author Thuan Truong
     */
    public function updateStatus($id) {
        $product = Product::find($id);
        if ($product) {
            if ($product->status == 1) {
                $product->status = 0;
                $product->update();
            } else {
                $product->status = 1;
                $product->update();
            }
            
            return Response::json(array(
                'status' => 'SUCCESS',
            ));
            
        } else {
            return Response::json(array(
                'status' => 'ERROR',
            ));
        }
        
    }
    
    /**
     * Delete Product 
     * @author Thuan Truong
     */
    public function destroy($id) {
        $this->product->deleteProduct($id);
        if (Request::wantsJson()) {
            return Response::json(array(
                'status' => 1,
                'redirect' => route('admin.product.index'),
                'message' => 'Sản phẩm đã được xóa thành công'
            ));
        } else {
            return Redirect::action('ProductController@index')->with('f_notice', 'Sản phẩm đã được xóa thành công');
        }
    }

	
}